package it.traveldream.entities;

import it.traveldreamClient.beans.dto.EscursioneDTO;
import it.traveldreamClient.beans.dto.PkgDTO;
import it.traveldreamClient.beans.dto.PkgPersonalDTO;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.persistence.*;

/**
 * Entity implementation class for Entity: Pacchetto_Personal
 *
 */


   
    @AssociationOverride(name="escursioni", joinTable=@JoinTable(name="pkgpers_esc",
        joinColumns=@JoinColumn(name="pkgpid", referencedColumnName="idProdotto"),
        inverseJoinColumns=@JoinColumn(name="escid", referencedColumnName="idProdotto")))
@Entity
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
public class Pacchetto_Personal extends Pacchetto implements Serializable {

    @OneToOne
	private User cliente;
    
	private static final long serialVersionUID = 1L;
	private int max_partecipanti=1;

	
	
	public Pacchetto_Personal() {
		super();
	}


	
	public User getCliente() {
		return cliente;
	}



	public void setCliente(User cliente) {
		this.cliente = cliente;
	}



	public int getMax_partecipanti() {
		return max_partecipanti;
	}


	public void setMax_partecipanti(int max_partecipanti) {
		this.max_partecipanti = max_partecipanti;
	}
   
	public Pacchetto_Personal(PkgPersonalDTO pers){
			this.max_partecipanti=pers.getMaxPartecipanti();
			this.Prezzo=Integer.parseInt(pers.getPrezzo());
			this.setNome(pers.getNome());
			this.setDescrizione(pers.getDescrizione());
	}
	
	
	public PkgPersonalDTO getDTO(){
		PkgPersonalDTO pk= new PkgPersonalDTO();
		
		pk.setDescrizione(this.getDescrizione());
		
		if(getAlloggio()==(null))
			pk.setAlloggio(null);
		else
			pk.setAlloggio(this.getAlloggio().getDTO());
		
		pk.setAndata(this.getAndata().getDTO());
		
		ArrayList<EscursioneDTO> tmp = new ArrayList<>();
		
		for(Escursione e: this.getEscursioni())
			tmp.add(e.getDTO());
		
		pk.setEscursioni(tmp);
		
		pk.setRitorno(this.getRitorno().getDTO());
		pk.setNome(this.getNome());
		pk.setPrezzo(this.getPrezzo().toString());
		
		pk.setIdPacc(this.getIdProdotto());
		pk.setMaxPartecipanti(this.getMax_partecipanti());
		pk.setEmailP(this.getCliente().getMail());
		return pk;
		
	}
	
}
